iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 6
0
自我挑戰組

R語言-繪圖的極限!系列 第 6

R語言-繪圖的極限! Day-6 (番外篇)一次讀多個檔案!?

  • 分享至 

  • xImage
  •  

10/20 台北秋意濃

相信大家跟我一樣,遇到的檔案類型常常會依照日期或月份分成多個檔案

一個檔案寫一行來讀取檔案,實在是非常的煩.............

左思右想之後決定想個辦法來解決!!

以下是我的方式
先library(data.table)(指令需求)

使用 Sys.getenv("USERNAME") 找出本機使用者(寫路徑時用),之後設定讀取(檔案存放位置)

list.files(path,pattern = "cat") => 接下來找出存放在路徑中,名稱包含cat的檔案

#快速讀檔
library(data.table)
yourname = paste(Sys.getenv("USERNAME")) #自動找出本機使用者名稱

path = paste("c:\\Users\\",yourname,"\\Downloads\\貓空\\",sep="") #設定讀檔路徑

xls = list.files(path,pattern = "cat") #找出在路徑 : path 中名稱有cat的檔案

這時候第一個問題來了,該怎麼判讀檔案的時間進行合併呢?

我們先給定一個向量空間

hold_c_time=rep(0,length(xls)) #給定一個等於資料數量的向量空間

之後我們使用file.info() 來找出該路徑下檔案的mtime(最後修改時間)
後我們將檔案依照修改時間進行排序!

for (i in 1:length(xls)){
  hold_c_time[i]=file.info(paste(path,xls[i],sep=""))[,"mtime"]
  dataname=xls[order(hold_c_time,decreasing = T)]
}

排序完成後最後一步就是要將這些檔案進行合併!

這一步就相對簡單了!

我們所需的是寫一個迴圈(長度等於檔案數量),並將其以列的方式進行合併!

  #讀取多檔案
  for(i in 1:length(dataname))
    {
    if(i==1)
      x=fread(paste(path,dataname[i],sep=""))
    else
      x=rbind(x,fread(paste(path,dataname[i],sep="")))[-length(x$星期),]
  }

但由於我拿到的檔案在最後一行都會將資料進行統計
https://ithelp.ithome.com.tw/upload/images/20181020/20112574YRZPaL81iD.png

所以我必需做的是,在每一次讀檔都將此行刪除,所以加上了

[-length(x$星期),]

此code來進行刪除最後一行

以上就是今天快速讀檔的分享~~

End.


上一篇
R語言-繪圖的極限! Day-5 畫圖後一目了然!
下一篇
R語言-繪圖的極限! Day-7 GGPLOT基本介紹
系列文
R語言-繪圖的極限!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言